Address resolution protocol (ARP) is the protocol by which bindings between IP addresses and MAC addresses are communicated between devices. When a device needs to send an IP packet to another device, the sending device must first determine the MAC address corresponding to IP address of the next hop (next machine in the path to the destination or the destination itself, if the next machine is the destination). The sending device can use ARP to determine the next hop MAC address. The sending machine broadcasts an ARP request with the next hop IP address to all machines within a particular domain, and the machine whose IP address is contained in the ARP request responds with the machine's MAC address. Once the sending machine obtains the next hop MAC address, the sending machine stores the binding between the IP address and the MAC address in memory so that the binding can be used for forwarding subsequent packets to the same machine.
In some packet forwarding architectures, the lookup used to determine the next hop information for a received packet is performed solely by the ingress packet processor, i.e., the packet processor associated with the port of a packet forwarding device on which the packet is received. The ingress packet processor performs a layer 3 route lookup based on the IP address in the received packet to identify not only the destination port in the packet forwarding device for the packet, but also the destination MAC address for the packet. Using such an ingress lookup architecture designed for full-mesh traffic, because a packet destined for a particular host may arrive on any port of the packet forwarding device, the memory associated with each packet processor must store a complete set of ARP bindings for all of the hosts connected to the packet forwarding device.
Because the memory accessible by each packet processor is typically limited, the number of hosts that can be connected to a packet forwarding device can be limited by the memory available to a single packet processor, which greatly limits the scalability of the packet forwarding device. For example, in a packet forwarding architecture where each packet processor has a fixed amount of memory for storing ARP bindings, the maximum number of ARP table entries is limited by the amount of memory of a single packet processor, because each packet processor must store the same complete set of ARP bindings. Stated differently, the requirement that each packet processor store the same complete set of ARP bindings reduces the scalability of the system by a factor of 1/(# of packet processors). Adding packet processors does not increase the number of hosts that the packet forwarding device can serve once the maximum number of ARP table entries, which is limited by the ARP binding storage space available to a single packet processor, is reached. Such a limitation is undesirable, especially when there is a need for the packet forwarding device to serve large numbers of connected hosts.
One particular network configuration for which it is desirable to have a packet forwarding device serve large numbers of connected hosts occurs when virtualization is used. In a virtualization environment, a single physical host may be configured with many virtual hosts. Each virtual host has its own separate operating system, network address, and MAC address. Each virtual host would require an ARP binding in a packet forwarding device. Thus, connecting many physical hosts to the packet forwarding device, where each of the physical hosts includes plural virtual hosts further increases the need for scalable packet forwarding device architectures.
Accordingly, in light of these difficulties, there exists a need for methods, systems, and computer readable media for next hop scaling. In addition, however, although improved next hop scaling could help customers with large data centers using server virtualization or large layer 2 forwarding domains, those same customers often also heavily depend on link aggregation (also known as port load sharing) for resilience and load balancing. A link aggregation group (LAG) may consist of a plurality of physical ports that behave as a group. Customers have two expectations for LAG behavior that must be addressed within any distributed IP next hop scaling method that may be developed: (1) Packets to a particular MAC address (and network address) from multiple sources (or to multiple addressees from a single source) may utilize all active ports in a LAG for load balancing; and (2) The network adapts quickly when a port in the LAG goes down or up, to achieve expectation (1).
Accordingly, for any methods and systems for next hop scaling that are developed, it can be desirable that such developments do not impede the ability of such methods and systems to incorporate link aggregation.